package top.milkbox.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import top.milkbox.domain.Post;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import top.milkbox.domain.PostComment;

import java.util.List;
import java.util.Map;

/**
 * @author xiaoguo
 * @description 针对表【tb_post】的数据库操作Mapper
 * @createDate 2022-10-23 16:55:21
 * @Entity top.milkbox.domain.Post
 */
@Mapper
public interface PostMapper extends BaseMapper<Post> {

    /**
     * 分页查询，条件查询
     * 如果有userId则同时将当前用户的点赞和收藏情况查询出来
     * 如果userId等于null则只查询基础信息
     *
     * @param userId            用户id，传入null表示用户未登录
     * @param isCollectionLimit 1表示查询收藏的帖子，0表示查询为收藏的帖子，null表示不对此项进行限制
     * @return List
     */
    public abstract List<Post> selectAll(
            @Param("userId") Integer userId,
            @Param("isCollectionLimit") Integer isCollectionLimit
    );

    /**
     * 查询一条帖子的详细信息
     * 如果有userId则同时将当前用户的点赞和收藏情况查询出来
     * 如果userId等于null则只查询基础信息
     *
     * @param userId 用户id，传入null表示用户未登录
     * @param postId 被查询的帖子的id
     * @return Post
     */
    public abstract Post selectOneAll(
            @Param("userId") Integer userId,
            @Param("postId") Integer postId
    );

    /**
     * 指定帖子view字段的增长数量
     * 负数则为负增长，0不增长
     *
     * @param postId         帖子的id
     * @param growthQuantity 增长的数量
     * @return 返回1表示成功
     */
    public abstract int viewGrowth(@Param("postId") int postId, @Param("growthQuantity") int growthQuantity);

    /**
     * 增长1
     *
     * @param postId 帖子的id
     * @return 返回1表示成功
     */
    public default int viewGrowth(int postId) {
        return viewGrowth(postId, 1);
    }

}




